﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CROSLAND.BL.BE;
//using DECOR.DL.DALC.SAPC.Proxy;
using CroslandSAP.Proxy;
using System.Data;

namespace CROSLAND.DL.DALC.SAPC
{
    public class UsuarioDALC : IUsuarioDALC
    {
        
        public static UsuarioDALC Instance() {
            if (_instance == null)
            {
                lock (typeof(UsuarioDALC))
                {
                    if (_instance == null)
                    {
                        _instance = new UsuarioDALC();
                    }
                }
            }
            return _instance;
        }

        private UsuarioDALC() { }
        private static volatile UsuarioDALC _instance = null;

        #region IUsuarioDALC Members

        public List<UsuarioBE> listar()
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXNombre(string pNombre)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXUsuarioSAP(int pUsuarioSAP_id)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> buscarXCorreo(string pCorreo)
        {
            throw new NotImplementedException();
        }

        public UsuarioBE leer(int pUsuario_id)
        {
            throw new NotImplementedException();
        }

        public UsuarioBE leer(string pUsuario)
        {
            throw new NotImplementedException();
        }

        public void agregar(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public bool login(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public void eliminar(int pUsuario_id)
        {
            throw new NotImplementedException();
        }

        public bool actualizar(UsuarioBE objUsuario)
        {
            throw new NotImplementedException();
        }

        public List<UsuarioBE> listar(UsuarioBE pObjUsuarioWeb)
        {
            throw new NotImplementedException();
        }

        public string actualizar(UsuarioWebBE pObjUsuarioWebBE)
        {
            string retMsg = "";
            UsuariosProxy proxy = new UsuariosProxy();
            try
            {
                proxy.Connection = DALC.getConnection;
                if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }
                //-----------------
                //proxy.Zweb_Cambia_Password(pObjUsuarioWebBE.Clave.ToUpper(), pObjUsuarioWebBE.Usuario.ToUpper());
                //-----------------
            }
            catch (Exception ex)
            {
                retMsg = ex.Message;
            }
            finally
            {
                SAP.Connector.SAPConnectionPool.ReturnConnection(proxy.Connection);
                proxy.Connection = null;
            }
            return retMsg.Trim();
        }

        public string login(ref UsuarioWebBE pObjUsuarioWebBE)
        {
            DALC.Username = "";
            DALC.Password = "";
            string retMsg = "";

            UsuariosProxy proxy = new UsuariosProxy();
            //--- login con params de sap:
            if (!string.IsNullOrEmpty(pObjUsuarioWebBE.UsuarioSap) &&
                !string.IsNullOrEmpty(pObjUsuarioWebBE.ClaveSap))
            {
                try
                {
                    CredencialesController.Usuario = pObjUsuarioWebBE;

                    proxy.Connection = DALC.getConnection;
                    if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }
                }
                catch (Exception ex)
                {
                    retMsg = ex.Message;
                    if (ex.Message.ToUpper().IndexOf("CONN") >= 0)
                    {
                        retMsg = ParametroDALC.getParamValueStatic("msgConnError");
                    }
                }
            }
            else
            {
                proxy.Connection = DALC.getConnection;
                try
                {
                    if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }
                }
                catch
                {
                    throw new Exception(ParametroDALC.getParamValueStatic("msgConnError"));
                }
                //-----------------
                string claveSap = "", perNr = "", usuarioSap = "", fechaPswd = "";
                string orgVentas = "", canalDist = "", ofVentas = "", grpVend = "", clienteEvent = "";
                string descripcion = "";
                string centro = "", almacen = "", sociedad = "", sector = "";
                string libro = "", puestoExp = "", turno = "", boveda = "";
                proxy.Zvmc_Sd_011(pObjUsuarioWebBE.Clave.ToUpper(), pObjUsuarioWebBE.Usuario.ToUpper(),
                                out fechaPswd, out sociedad, out descripcion, out clienteEvent, out almacen, out libro, out retMsg, 
                                out claveSap, out perNr, out sector, out usuarioSap,
                                out ofVentas, out grpVend, out orgVentas, out puestoExp, out canalDist, out centro, out turno, out boveda);
                SAP.Connector.SAPConnectionPool.ReturnConnection(proxy.Connection);
                proxy.Connection = null;
                //-----------------
                pObjUsuarioWebBE.ClaveSap = claveSap;
                pObjUsuarioWebBE.PerNr = perNr;
                //--- datos adicionales
                pObjUsuarioWebBE.OfVentas = ofVentas;
                pObjUsuarioWebBE.OrgVentas = orgVentas;
                pObjUsuarioWebBE.CanalDist = canalDist;
                pObjUsuarioWebBE.GrpVend = grpVend;
                pObjUsuarioWebBE.ClienteEvent = clienteEvent;
                //---------------------
                pObjUsuarioWebBE.UsuarioSap = usuarioSap;
                pObjUsuarioWebBE.FechaPswd = ParametroDALC.dateSapToNet(fechaPswd);
                pObjUsuarioWebBE.Descripcion = descripcion; //WEBDIST
                pObjUsuarioWebBE.centro = centro;
                pObjUsuarioWebBE.almacen = almacen;
                pObjUsuarioWebBE.sociedad = sociedad;
                pObjUsuarioWebBE.sector = sector;
                pObjUsuarioWebBE.vstel = puestoExp;
                pObjUsuarioWebBE.Libro = libro;
                pObjUsuarioWebBE.turno = turno;
                pObjUsuarioWebBE.boveda = boveda;
                //if (retMsg.Equals(""))
                //{
                //    DALC.Username = usuarioSap;
                //    DALC.Password = claveSap;
                //}
            }
            return retMsg;
        }

        ////WEBDIST
        public List<string> ObtenerOpcionesPorUsuario()
        {
        //    UsuariosProxy proxy = new UsuariosProxy();
            List<string> lstOpciones = new List<string>();

        //    try
        //    {
        //        proxy.Connection = DALC.getConnection;
        //        if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }

        //        ZSSD_OPCION_USERTable t_opciones = new ZSSD_OPCION_USERTable();
        //        proxy.Zvmc_Sd_007(ref t_opciones);
        //        DataTable dt = t_opciones.ToADODataTable();
        //        foreach (DataRow dr in dt.Rows)
        //        {
        //            lstOpciones.Add(dr["opcion"].ToString());
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
            return lstOpciones;
        }

        #endregion

        #region IUsuarioDALC Members


        #endregion
    }
}
